/**
 * 系统常量定义
 */

/**
 * 系统配置常量
 */
export const SYSTEM_CONFIG = {
  /** 系统名称 */
  SYSTEM_NAME: 'TK 管理系统',
  /** 系统版本 */
  VERSION: 'v1.0.0',
  /** 系统描述 */
  DESCRIPTION: '基于 React 18 + Antd 5 + TypeScript 构建的现代化管理系统',
  /** 默认语言 */
  DEFAULT_LANGUAGE: 'zh-CN',
  /** 默认主题 */
  DEFAULT_THEME: 'light',
} as const;

/**
 * API 相关常量
 */
export const API_CONFIG = {
  /** API 基础路径 */
  BASE_URL: '/api',
  /** 请求超时时间（毫秒） */
  TIMEOUT: 10000,
  /** 重试次数 */
  RETRY_COUNT: 3,
  /** 重试延迟（毫秒） */
  RETRY_DELAY: 1000,
} as const;

/**
 * 存储相关常量
 */
export const STORAGE_KEYS = {
  /** 用户信息 */
  USER_INFO: 'tk_user_info',
  /** 访问令牌 */
  ACCESS_TOKEN: 'tk_access_token',
  /** 刷新令牌 */
  REFRESH_TOKEN: 'tk_refresh_token',
  /** 主题设置 */
  THEME_SETTING: 'tk_theme_setting',
  /** 语言设置 */
  LANGUAGE_SETTING: 'tk_language_setting',
  /** 侧边栏折叠状态 */
  SIDEBAR_COLLAPSED: 'tk_sidebar_collapsed',
} as const;

/**
 * 路由路径常量
 */
export const ROUTES = {
  /** 首页 */
  HOME: '/',
  /** 仪表盘 */
  DASHBOARD: '/dashboard',
  /** 关于 */
  ABOUT: '/about',
  /** 登录 */
  LOGIN: '/login',
  /** 404页面 */
  NOT_FOUND: '/404',
} as const;

/**
 * 分页配置常量
 */
export const PAGINATION_CONFIG = {
  /** 默认页码 */
  DEFAULT_CURRENT: 1,
  /** 默认每页条数 */
  DEFAULT_PAGE_SIZE: 10,
  /** 每页条数选项 */
  PAGE_SIZE_OPTIONS: ['10', '20', '50', '100'],
  /** 显示快速跳转 */
  SHOW_QUICK_JUMPER: true,
  /** 显示每页条数选择器 */
  SHOW_SIZE_CHANGER: true,
  /** 显示总数 */
  SHOW_TOTAL: true,
} as const;

/**
 * 表格配置常量
 */
export const TABLE_CONFIG = {
  /** 默认表格大小 */
  DEFAULT_SIZE: 'middle',
  /** 是否显示边框 */
  BORDERED: true,
  /** 斑马纹 */
  STRIPE: false,
  /** 行选择配置 */
  ROW_SELECTION: {
    /** 选择框列宽度 */
    COLUMN_WIDTH: 60,
    /** 固定选择框列 */
    FIXED: true,
  },
} as const;

/**
 * 表单配置常量
 */
export const FORM_CONFIG = {
  /** 默认标签对齐方式 */
  LABEL_ALIGN: 'right',
  /** 默认标签宽度 */
  LABEL_COL_SPAN: 6,
  /** 默认包装器宽度 */
  WRAPPER_COL_SPAN: 18,
  /** 验证触发方式 */
  VALIDATE_TRIGGER: 'onChange',
  /** 自动完成 */
  AUTO_COMPLETE: 'off',
} as const;

/**
 * 消息提示配置常量
 */
export const MESSAGE_CONFIG = {
  /** 默认显示时长（秒） */
  DURATION: 3,
  /** 最大显示数量 */
  MAX_COUNT: 3,
  /** 距离顶部位置 */
  TOP: 24,
  /** 获取容器 */
  GET_CONTAINER: () => document.body,
} as const;

/**
 * 文件上传配置常量
 */
export const UPLOAD_CONFIG = {
  /** 最大文件大小（MB） */
  MAX_FILE_SIZE: 10,
  /** 允许的图片格式 */
  ALLOWED_IMAGE_TYPES: ['image/jpeg', 'image/png', 'image/gif', 'image/webp'],
  /** 允许的文档格式 */
  ALLOWED_DOCUMENT_TYPES: [
    'application/pdf',
    'application/msword',
    'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
    'application/vnd.ms-excel',
    'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
  ],
  /** 上传接口地址 */
  UPLOAD_URL: '/api/upload',
} as const;

/**
 * 日期时间格式常量
 */
export const DATE_FORMAT = {
  /** 日期格式 */
  DATE: 'YYYY-MM-DD',
  /** 时间格式 */
  TIME: 'HH:mm:ss',
  /** 日期时间格式 */
  DATETIME: 'YYYY-MM-DD HH:mm:ss',
  /** 月份格式 */
  MONTH: 'YYYY-MM',
  /** 年份格式 */
  YEAR: 'YYYY',
} as const;

/**
 * 状态码常量
 */
export const STATUS_CODE = {
  /** 成功 */
  SUCCESS: 200,
  /** 创建成功 */
  CREATED: 201,
  /** 无内容 */
  NO_CONTENT: 204,
  /** 错误请求 */
  BAD_REQUEST: 400,
  /** 未授权 */
  UNAUTHORIZED: 401,
  /** 禁止访问 */
  FORBIDDEN: 403,
  /** 未找到 */
  NOT_FOUND: 404,
  /** 服务器错误 */
  INTERNAL_SERVER_ERROR: 500,
  /** 网关错误 */
  BAD_GATEWAY: 502,
  /** 服务不可用 */
  SERVICE_UNAVAILABLE: 503,
} as const;

/**
 * 正则表达式常量
 */
export const REGEX_PATTERNS = {
  /** 邮箱 */
  EMAIL: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
  /** 手机号 */
  PHONE: /^1[3-9]\d{9}$/,
  /** 身份证号 */
  ID_CARD: /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
  /** 密码（8-16位，包含字母和数字） */
  PASSWORD: /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*#?&]{8,16}$/,
  /** 用户名（4-16位字母数字下划线） */
  USERNAME: /^[a-zA-Z0-9_]{4,16}$/,
  /** URL */
  URL: /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i,
  /** IP地址 */
  IP: /^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/,
} as const;